In order to increase the overall speed of computers, both the speed of the computer processor must be increased, as well as the speed of components that interact with the processor, such as memory. As memory speeds increase, the power consumption of the memory increases the amount of heat generated by the memory devices. When the amount of heat surpasses a pre-defined limit, a cooling mechanism must lower the temperature of the memory, or a memory controller must throttle back activity to keep the memory within its thermal limits.
For many computer systems it is not desirable to add devices to support cooling in order to reduce cost and save space. Therefore, most computer systems rely on throttling to keep the memory within their thermal limits. As memory power has increased, the throttling required has also increased, which impacts system performance.
Typically, the level of throttling needed is determined by measuring the different type of memory on the computer system, and then setting the throttling level so that the worst case memory device load is protected, even in the case of a virus-like application which could sustain the worst case power workload for a given device. This method is used since there is no realistic way of knowing how much actual power the type of memory device populated in the system consumes. The result is that a bandwidth throttling setpoint must cater to the worst-case components with no way of taking advantage of memory designs that consume less power.
In addition, memory throttling levels are based on specifications of the memory devices in the computer system and are typically conservative. This causes the memory controller to potentially throttle unnecessarily when lower power memory is used, which negatively impacts the performance of the system.
Further, increased speeds of memory devices typically increase the heat of the memory controller as well since the memory controller has similar thermal constraints as the memory devices. Transactions such as writing to the memory are typically monitored for excessive bandwidth based on power assumptions based on the worst case properties of the memory controller device. Throttling due to these constraints can also negatively impact performance.
Based on the foregoing, there is a need for a computer system having a memory controller that more accurately throttles a memory sub-system by determining a more accurate reading of the power consumption of the components that require activity throttling to ensure that they are functioning within their thermal limits.